package ltd.sumfsy.grain.service;

import ltd.sumfsy.grain.bean.User;

import java.util.List;

/**
 * 用户相关服务
 *
 * @author 范颂扬
 * @create 2021-05-12 21:08
 */
public interface UserService {

    /**
     * 添加用户（注册）
     *
     * @param user 用户数据
     * @return boolean 返回是否添加成功
     * @author 范颂扬
     * @date 2021-05-12 21:09
     */
    boolean register(User user);

    /**
     * 根据用户 ID 注销用户
     *
     * @param id 用户 ID
     * @return boolean 返回是否注销成功
     * @author 范颂扬
     * @date 2021-05-12 21:10
     */
    boolean logoutById(Integer id);

    /**
     * 根据电话号码注销用户
     *
     * @param tel 电话号码
     * @return boolean 返回是否注销成功
     * @author 范颂扬
     * @date 2021-05-12 21:12
     */
    boolean logoutByTel(String tel);

    /**
     * 修改用户数据
     *
     * @param user 修改的数据
     * @return boolean 返回是否修改成功
     * @author 范颂扬
     * @date 2021-05-12 21:13
     */
    boolean alterDataById(User user);

    /**
     * 根据用户 ID 查询
     *
     * @param id 查询的用户 ID
     * @return ltd.sumfsy.grain.bean.User 返回查询的对象
     * @author 范颂扬
     * @date 2021-05-12 21:14
     */
    User queryById(Integer id);

    /**
     * 根据电话号码查询
     *
     * @param tel 查询的电话号码
     * @return ltd.sumfsy.grain.bean.User
     * @author 范颂扬
     * @date 2021-06-10 20:01
     */
    User queryByTel(String tel);

    /**
     * 根据用户名查询
     *
     * @param name 查询的用户名
     * @return ltd.sumfsy.grain.bean.User
     * @author 范颂扬
     * @date 2021-06-10 20:01
     */
    User queryByName(String name);

    /**
     * 查询所有的用户信息
     *
     * @return java.util.List<ltd.sumfsy.grain.bean.User> 返回所有的用户信息
     * @author 范颂扬
     * @date 2021-05-12 21:30
     */
    List<User> queryAll();

    /**
     * 查询当前用户名是否存在
     *
     * @param username 待查询的用户名
     * @return boolean 返回查询结果
     * @author 范颂扬
     * @date 2021-05-12 21:36
     */
    boolean isExistByUsername(String username);

    /**
     * 验证电话号码是否存在
     *
     * @param tel 待验证的电话号码
     * @return boolean
     * @author 范颂扬
     * @date 2021-07-06 16:09
     */
    boolean isExistByTel(String tel);

    /**
     * 登录校验
     *
     * @param user 待登录验证的用户数据
     * @return boolean 返回验证结果
     * @author 范颂扬
     * @date 2021-05-12 21:45
     */
    boolean isExistForLogin(User user);
}
